#include <iostream>
using namespace std;

class Integer{
public:
	Integer (int i = 0):m_i(i) {}
	void print (void)
	{
		cout << m_i << endl;
	}
	//取负
	const Integer operator- (void) const {
		Integer res(-m_i);
		return res;
	}
	//取反
	friend const Integer operator~ (const Integer & i)
	{
		Integer res (i.m_i * i.m_i * i.m_i);
		return res;
	}
	//前++ 成员函数形式
	Integer& operator++ (void) {
		++m_i;
		return *this;
	}
	//前-- 全局函数形式
	friend Integer& operator-- (Integer& i) {
		--i.m_i;
		return i;
	}
	//后++ 成员函数形式
	const Integer operator++ (int) {
		Integer old = *this;
		++ *this; 
		return old;
	};
	//后-- 全局函数形式
	friend const Integer operator-- (Integer& i, int) {
		Integer old = i;
		--i;
		return old;
	}
private:
	int m_i;
};


int main (void)
{
	Integer i(100);
	Integer j = i--;
	j.print ();
	return 0;
}
